package com.jintian.smart.demo.mapper;

import com.jintian.smart.kernel.orm.mapper.IBaseExtMapper;
import com.jintian.smart.base.api.demo.constant.CategoryTypeEnum;
import com.jintian.smart.base.api.demo.entity.CategoryBaseEntity;
import org.beetl.sql.mapper.annotation.Mapper;
import org.beetl.sql.mapper.annotation.Param;
import org.beetl.sql.mapper.annotation.SqlResource;

import java.util.List;

/**
 * 类目 dao
 */
@Mapper
@SqlResource("demo.Category")
public interface CategoryMapper extends IBaseExtMapper<CategoryBaseEntity> {
    /**
     * 根据父级id 类型 查询子类
     *
     * @param parentIdList 父级id集合
     * @param deletedFlag  删除标识
     * @return 列表
     */
    List<CategoryBaseEntity> queryByParentId(@Param("parentIdList") List<Long> parentIdList,
                                             @Param("deletedFlag") Integer deletedFlag);

    /**
     * 根据父级id 类型 查询子类
     *
     * @param parentIdList 父级id集合
     * @param categoryType {@link CategoryTypeEnum}
     * @param deletedFlag  删除标识
     * @return 列表
     */
    List<CategoryBaseEntity> queryByParentIdAndType(@Param("parentIdList") List<Long> parentIdList,
                                                    @Param("categoryType") Integer categoryType,
                                                    @Param("deletedFlag") Integer deletedFlag);

    /**
     * 某个类型的所有
     */
    List<CategoryBaseEntity> queryByType(@Param("categoryType") Integer categoryType,
                                         @Param("deletedFlag") Integer deletedFlag);

    /**
     * 根据类型和id查询
     */
    CategoryBaseEntity selectByTypeAndId(@Param("categoryType") Integer categoryType, @Param("categoryId") Long categoryId);

    /**
     * 查看类目 具体条件 看sql
     */
    CategoryBaseEntity selectOne(CategoryBaseEntity entity);
}
